﻿package ygg.encoding.swf.abc.object
{
	public class Class_ extends Trait implements ISlotContainer, IMethodContainer, IFunctionContainer
	{
		public var superQName:String;
		
		public var isDynamic:Boolean;
		public var isInternal:Boolean;
		
		public var superClass:Class_;
		
		//public var instances:Vector.<Interface_>;
		public var init:Method;
		
		public var instance:Instance;
		
		public var imports:Array;
		
		private var _slots:Vector.<Trait>;
		private var _methods:Vector.<Method>;
		private var _variables:Vector.<Variable>;
		private var _constants:Vector.<Constant>;
		private var _functions:Vector.<Function_>;
		
		private var _members:Vector.<Trait>;
		private var _names:Object;
		
		public function Class_()
		{
			super();
			_slots = new Vector.<Trait>();
			_methods = new Vector.<Method>();
			_variables = new Vector.<Variable>();
			_constants = new Vector.<Constant>();
			_functions = new Vector.<Function_>();
			_members = new Vector.<Trait>();
			_names = {};
		}
		
		public function get slots():Vector.<Trait> { return _slots; }
		
		public function set slots(value:Vector.<Trait>):void
		{
			_slots = value;
		}
		
		public function get methods():Vector.<Method> { return _methods; }
		
		public function set methods(value:Vector.<Method>):void
		{
			_methods = value;
		}
		
		public function get variables():Vector.<Variable> { return _variables; }
		
		public function set variables(value:Vector.<Variable>):void
		{
			_variables = value;
		}
		
		public function get constants():Vector.<Constant> { return _constants; }
		
		public function set constants(value:Vector.<Constant>):void
		{
			_constants = value;
		}
		
		public function get functions():Vector.<Function_> { return _functions; }
		
		public function set functions(value:Vector.<Function_>):void
		{
			_functions = value;
		}
		
		public function get members():Vector.<Trait> { return _members; }
		
		public function set members(value:Vector.<Trait>):void
		{
			_members = value;
		}
		
		public function get names():Object { return _names; }
		
		public function set names(value:Object):void
		{
			_names = value;
		}
	}
	
}